﻿namespace Journeo_backend.Services.Interfaces
{
    public interface IAttractionService
    {
        Task<Response<AttractionVO>> GetAttractionDetailById(long AttractionId);

        Task<PageResponse<AttractionVO>> GetAttractionsByRegion(int pageNumber, int pageSize, long regionId);
        Task<PageResponse<AttractionVO>> GetAttractionsBySearch(int pageNumber, int pageSize, string query);
        Task<PageResponse<AttractionVO>> GetAttractionsByRating(int pageNumber, int pageSize);
        Task<PageResponse<AttractionVO>> GetAttractionsBySelectCount(int pageNumber, int pageSize);
        Task<PageResponse<AttractionVO>> GetAttractionsByDistance(int pageNumber, int pageSize, decimal latitude, decimal longitude);
        Task<PageResponse<AttractionVO>> GetAttractionsByHot(int pageNumber, int pageSize);


        Task<PageResponse<AttractionVO>> GetAttractionsByRating(long regionId, int pageNumber, int pageSize);
        Task<PageResponse<AttractionVO>> GetAttractionsBySelectCount(long regionId, int pageNumber, int pageSize);
        Task<PageResponse<AttractionVO>> GetAttractionsByDistance(long regionId, int pageNumber, int pageSize, decimal latitude, decimal longitude);
        Task<PageResponse<AttractionVO>> GetAttractionsByHot(long regionId, int pageNumber, int pageSize);


        Task<Response<string>> LikeAttraction(long userId, long attractionId);

        Task<List<Attraction>> GetAttractions(long[] attractionIds);


        // 景点评论模块
        Task<Response<AttractionCommentVO>> CreateAttractionComment(AttractionCommentDTO attractionCommentDTO);
        Task<Response<string>> DeleteAttractionComment(long commentId);
        Task<PageResponse<AttractionCommentVO>> GetCommentsByAttraction(long attractionId, int pageNumber, int pageSize);
        Task<Response<string>> UploadCommentImage(long userId, IFormFile file);
        Task<Response<string>> DeleteCommentImage(string imageUrl);
        Task<Response<string>> LikeComment(long userId, long commentId);


        Task<Response<string>> CreateIndexAsync();
    }
}
